HBase常用的Shell命令详解

您所在的位置:网站首页 hbase shell是什么 HBase常用的Shell命令详解

HBase常用的Shell命令详解

2024-01-21 16:27| 来源: 网络整理| 查看: 265

HBase Shell常用命令和基本操作

文章目录 HBase Shell常用命令和基本操作前言基本操作1. 进入HBase命令操作行2. HBase帮助命令:3. 查询服务器状态4. 查询版本号5. 查看元数据分区信息6. 查看hbase中的表,hbase很重要 DDL 操作1. 创建一个命名空间2. 列出所有的命名空间3. 删除命名空间4. 创建一个表5. 列出所有表6. 列出指定命名空间下所有表7. 查看表的描述信息8. 删除一个列族9. 添加一个列族10. 删除表11. 查询表是否存在12. 查看表是否可用 DML 操作0. 创建表做测试1. 插入数据2. 全表扫描获取数据,可指定开始结束rowkey2.1 HBase中文显示是十六进制的,正常显示中文 3. 获取指定的数据4. 更新数据5. 如果有多版本获取多条数据4. 通过指定时间戳获取某个版本的数据6. 统计表中的行数7. 删除一列8. 删除行的所有单元格9. 清空整张表

前言

如果忘记了完整的命令,从左输入命令部分内容,然后点击tab键会提示完整的命令

如输入cr 然后点击tab 就会有以下提示

hbase(main):001:0> create create create_namespace

注意,输入的表名,行名,列族名,列名和值等必须都要带引号,否则会认为是一个命令。

注意,每个命令之后不需要分号 ; 结束。

基本操作 1. 进入HBase命令操作行 # hbase shell 2. HBase帮助命令: hbase(main):002:0> help 'create' 3. 查询服务器状态 hbase(main):003:0> status 1 active master,0 backup masters, 3 servers,0 dead,2.0000 average load 4. 查询版本号 hbase(main):004:0> version 2.0.2.3.1.4.0-315, r, Fri Aug 23 05:18:48 UTC 2019 5. 查看元数据分区信息 hbase(main):042:0> scan 'hbase:meta' 6. 查看hbase中的表,hbase很重要 hbase(main):043:0> list_namespace_tables 'hbase' DDL 操作

数据定义语言(Data Defination Language,DDL)操作主要操作表和库,查看、修改、删除表等操作。

1. 创建一个命名空间

命名空间相当于数据库

hbase(main):005:0>create_namespace 'namespace1' 2. 列出所有的命名空间 hbase(main):006:0>list_namespace 3. 删除命名空间 hbase(main):007:0>drop_namespace 'namespace1' 4. 创建一个表

创建表table1,列族为column_famaly1,column_famaly2

创建表必须有至少一个列族,多个列族用逗号分开。不指定命名空间,表创建在默认命名空间

hbase(main):008:0> create 'table1','column_famaly1','column_famaly2'

指定命名空间为namespace1 ,格式为create '命名空间:表名','列族名','列族名','列族名...'

hbase(main):009:0> create 'namespace1:table1','column_famaly1','column_famaly2'

创建表时指定列族可以保存的版本,如版本号为3,则可以保存3个版本,不指定默认为1

create '表名',{NAME=>'列族名1',VERSIONS=>给定一个版本号},{NAME=>'列族名2',VERSIONS=>给定的版本号}

创建表时预分区

create '表名','列族',SPLITS=>['1000000','2000000','3000000'] 5. 列出所有表 hbase(main):010:0> list 6. 列出指定命名空间下所有表 hbase(main):011:0> list_namespace_tables 'namespace1' 7. 查看表的描述信息

desc和decribe都可以

可查看各个列族信息和版本

hbase(main):012:0> describe 'table1'

带命名空间的表

hbase(main):013:0> describe 'namespace1:table1'

描述信息解释

  NAME:表示列族名。   BLOOMFILTER:表示为列族级别的类型(读者只作了解即可)。   VERIONS:表示版本数。   N_MEMORY:设置是否存入内存。   KEEP_DELETED_CELLS:设置被删除的数据,在基于时间的历史数据查询中是否依然可见。   DATA_BLOCK_ENCODING:表示数据块的算法(读者只作了解即可)。   TTL:表示版本存活的时间。   COMPRESSION:表示设置压缩算法。   MIN_VERSIONS:表示最小版本数。   BLOCKCACHE:表示是否设置读缓存。   REPLICATION:表示设置备份。 8. 删除一个列族 hbase(main):014:0> alter 'table1',{NAME=>'column_famaly1',METHOD=>'delete'} 9. 添加一个列族

VERSIONS为可以保存的版本,5表示可以保存5个版本

若该列族已存在,也可以直接更新列族的版本

hbase(main):015:0> alter 'table1',{NAME=>'column_famaly1',VERSIONS => 5} 10. 删除表

需要先把表设置为不可用 disable。

hbase(main):016:0> disable'table1'

然后才能删除。

hbase(main):017:0> drop 'table1' 11. 查询表是否存在 hbase(main):018:0> exists 'table1' 12. 查看表是否可用 hbase(main):019:0> is_enabled 'table1' DML 操作

DML(Data Manipulation Language,数据操作语言)操作主要操作表中的数据,对表的数据进行添加、修改、删除和查询。

0. 创建表做测试

在默认命名空间下,创建一个student表,有列族info和scores(个人信息和科目分数)

info可以保存的版本为3,scores版本为1

hbase(main):020:0> create 'student',{NAME=>'info',VERSIONS=>3},{NAME=>'scores',VERSIONS=>1} 1. 插入数据

插入数据的时候需要指定命名空间:表名,行名,列族:列名和值,命名空间和列名可省

put '[命名空间:]表名','行名','列族名[:列名]','值'

向student表中增加以下数据

hbase(main):021:0> put 'student','rowkey1','info:name','xhx' hbase(main):022:0> put 'student','rowkey1','info:age','20' hbase(main):023:0> put 'student','rowkey1','info:sex','boy' hbase(main):024:0> put 'student','rowkey2','scores:math','90'

如果不想指定列名就直接写列族:,冒号后面不加列名

hbase(main):025:0> put 'student','rowkey1','info:','nocol' 2. 全表扫描获取数据,可指定开始结束rowkey

获取 student表的所有数据。如果有多个版本数据会显示时间戳最近的一条数据。

hbase(main):026:0> scan 'student' ROW COLUMN+CELL rowkey1 column=info:, timestamp=1619157750674, value=nocol rowkey1 column=info:age, timestamp=1619157768685, value=20 rowkey1 column=info:name, timestamp=1619158508679, value=xhx3 rowkey1 column=info:sex, timestamp=1619157787678, value=boy rowkey2 column=scores:math, timestamp=1619157787700, value=90

扫描查看数据,指定查看行数

hbase(main):040:0> scan 'student',{LIMIT=>2} ROW COLUMN+CELL rowkey1 column=info:, timestamp=1619157750674, value=nocol rowkey1 column=info:age, timestamp=1619157768685, value=20

扫描查看数据,指定开始和结束的rowkey,左闭右开(rowkey1 scan 'student',{STARTROW => 'rowkey1', STOPROW => 'rowkey2'} ROW COLUMN+CELL rowkey1 column=info:, timestamp=1619157750674, value=nocol rowkey1 column=info:age, timestamp=1619157768685, value=20 rowkey1 column=info:name, timestamp=1619158508679, value=xhx3 rowkey1 column=info:sex, timestamp=1619157787678, value=boy 2.1 HBase中文显示是十六进制的,正常显示中文 scan 'student', {FORMATTER => 'toString'} 3. 获取指定的数据

获取 student表的 rowkey1行的所有数据。如果有多版本只显示时间戳最新一条的数据。

hbase(main):027:0> get 'student','rowkey1' COLUMN CELL info: timestamp=1619157750674, value=nocol info:age timestamp=1619157768685, value=20 info:name timestamp=1619158508679, value=xhx3 info:sex timestamp=1619157787678, value=boy

获取 student表的 rowkey1行的info列族下所有数据。如果有多版本只显示时间戳最新一条的数据

hbase(main):028:0> get 'student','rowkey1','info' COLUMN CELL info: timestamp=1619157750674, value=nocol info:age timestamp=1619157768685, value=20 info:name timestamp=1619158508679, value=xhx3 info:sex timestamp=1619157787678, value=boy

注意,获取列族 info和info:的结果是不同的。

hbase(main):029:0> get 'student','rowkey1','info:' COLUMN CELL info: timestamp=1619157750674, value=nocol

获取student表的 rowkey1行的info列族下列名为name的数据。如果有多版本只显示时间戳最新一条的数据

hbase(main):030:0> get 'student','rowkey1','info:name' COLUMN CELL info:name timestamp=1619158508679, value=xhx3 4. 更新数据

更新数据,增加多版本数据,列族info可以保存的版本为3条数据

更新表student 行rowkey1 列族info 列name的数据

hbase(main):031:0> put 'student','rowkey1','info:name','xhx1' hbase(main):032:0> put 'student','rowkey1','info:name','xhx2' hbase(main):033:0> put 'student','rowkey1','info:name','xhx3' 5. 如果有多版本获取多条数据 hbase(main):034:0> get 'student','rowkey1',{COLUMN=>'info:name',VERSIONS=>3} info:name timestamp=1619158508679, value=xhx3 info:name timestamp=1619158507550, value=xhx2 info:name timestamp=1619158505321, value=xhx1 4. 通过指定时间戳获取某个版本的数据 hbase(main):035:0> get 'student','rowkey1',{COLUMN=>'info:name',TIMESTAMP=>1619158507550} info:name timestamp=1619158507550, value=xhx2 6. 统计表中的行数

如student表中有rowkey1和rowkey2两行, 则返回2 row(s)

hbase(main):036:0> count 'student' 7. 删除一列

删除列sex

hbase(main):037:0> delete 'student','rowkey1','info:sex' 8. 删除行的所有单元格

删除student表中rowkey1行的所有列

也就是相当于删除了rowkey1行的所有数据

hbase(main):038:0> deleteall 'student','rowkey1' 9. 清空整张表 hbase(main):039:0> truncate 'student'


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3